import { useEffect, useState } from "react";
import { z } from "zod";
import { trpc } from "@/app/_trpc/client";
import useFormHandler from "@/hooks/useFormHandler";
import { useToast } from "@/components/ui/use-toast";
import { modifyProjectCostsSchema } from "@/lib/schemas/modifyProjectCostSchema";
const useModifyProjectCosts = (project: any) => {
const [open, setOpen] = useState(false);
const utils = trpc.useUtils();
const { toast } = useToast();
const defaultValues: z.infer<typeof modifyProjectCostsSchema> = {
costPerMeter: 0,
totalCostMaterials: 0,
totalCostPerMeter: 0,
laborCost: 0,
name: ""
};
const { form, isInputChanged, setIsInputChanged } = useFormHandler(
modifyProjectCostsSchema,
defaultValues
);
const { mutate: updateProjectMutation, isPending } =
trpc.projects.updateProject.useMutation({
onSuccess: () => {
toast({
title: "Éxito!",
description: "Proyecto actualizado con éxito",
});
utils.projects.getProjectById.invalidate({ value: project?.id as any });
utils.projects.getProjects.invalidate();
setOpen(false);
},
onError: () => {
toast({
title: "Error!",
description: "Error al actualizar el proyecto",
variant: "destructive",
});
},
});
useEffect(() => {
if (project) {
form.setValue("costPerMeter", project.costPerMeter!);
form.setValue("laborCost", project.laborCost!);
form.setValue("totalCostMaterials", project.totalCostMaterials!);
form.setValue("totalCostPerMeter", project.totalCostPerMeter!);
form.setValue("name", project.name);
}
}, [project, form]);
const onSubmit = (values: z.infer<typeof modifyProjectCostsSchema>) => {
updateProjectMutation({ ...values, id: project?.id! });
};
return {
open,
setOpen,
form,
isInputChanged,
isPending,
onSubmit,
};
};
export default useModifyProjectCosts;